package 图书管理项目;

//+----------+-------------+------+-----+---------+----------------+
//  | Field    | Type        | Null | Key | Default | Extra          |
//  +----------+-------------+------+-----+---------+----------------+
//  | userId   | int(11)     | NO   | PRI | NULL    | auto_increment |
//  | username | varchar(20) | YES  |     | NULL    |                |
//  | password | varchar(20) | YES  |     | NULL    |                |
//  | idAdmin  | int(11)     | YES  |     | NULL    |                |
//  +----------+-------------+------+-----+---------+----------------+

import 图书管理项目.oprations.IOperation;

//一个User类表示一个用户
abstract public class User {
    private int useId;
    private String name;
    private String password;
    //针对 idAdmin，并不能直接使用一个Boolean变量来区分，而是使用两个继承USer的不同子类
    //因为，管理员和普通用户支持的方法是不一样的

    //创建一个数组，数组里面就是该用户支持的哪些操作
    //针对管理员和普通用户，在 operations 中分别设置不同的操作
    IOperation[] operations;

    //管理员和普通用户看到的菜单也不同
    abstract public int menu();

    public void doOperation(int choice) {
        operations[choice].work();
    }

    public int getUseId() {
        return useId;
    }

    public void setUseId(int useId) {
        this.useId = useId;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "User{" +
                "useId=" + useId +
                ", name='" + name + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}
